package cn.gorit.user.controller;

import java.lang.Integer;
import java.util.Arrays;
import java.util.List;

import cn.gorit.common.enums.ResultEnums;
import cn.gorit.common.lang.Result;
import cn.gorit.dto.user.LoginDto;
import cn.gorit.dto.user.RegDto;
import cn.gorit.entity.user.User;
import cn.gorit.utils.Page;
import cn.gorit.user.service.UserService;
import cn.gorit.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @version v1.0
 * @Classname UserController
 * @Description 用户的请求接口，注释对外的 back 处理接口
 * @Author Gorit
 * @Created by 2021/3/11 23:10
 * @IDLE IntelliJ IDEA
 **/
@RestController
@RequestMapping("/api/v1")
public class UserController {

    /**
     * 接口测试
     */
    @Autowired
    private UserService userService;

    // 用户前台注册 不需要 token，接口限流，防止重复提交，采用 form 表单提交
    @PostMapping("/register")
    public Result<Object> resister(@RequestBody RegDto dto) {
        return userService.reg(dto);
    }

    // 用户前台登录 不需要 token
    @PostMapping("/login")
    public Result<Object> login(@RequestBody LoginDto dto) {
//        StpUtil.setLoginId(1,"front"); // 登录 ID 存储
        return userService.login(dto);
    }

    // 用户前台登出账户   不需要 token
    @GetMapping("/logout")
    public Result<Object> logout() {
//        StpUtil.logoutByLoginId(StpUtil.getLoginId());
        return new Result<>("登出成功");
    }

    // 前台获取用户信息 需要 token
    @GetMapping("/front/info/{id}")
    public Result<User> getUserInfo(@PathVariable("id") String id) {
       return userService.getUserById(id);
    }

    // 更新用户信息   token
    @PutMapping("/front/info")
    public Result<Object> updateInfo(@RequestBody User user) {
//        System.out.println(user.toString());
        return userService.updateInfo(user);
    }

    // *** 前台用户主动注销 OK
    @DeleteMapping("/front/del/{id}")
    public Result<Object> delete(@PathVariable("id") String id) {
        return userService.logOff(id);
    }

    // =================== 和后台相关的 API 用户的请求接口=================

    // 用户后台模块 分页获取，后台管理系统只能查看用户的数据  有问题
//    @PostMapping("/back/page")
//    public Result<Page<User>> getUserListByPage(@RequestBody Page<User> page) {
//        String sortColumn = page.getSortColumn();
//        if (StringUtils.isNotBlank(sortColumn)) {
//            // 排序列不为空
//            String[] sortColumns = {"gender", "register_date"};
//            List<String> sortList = Arrays.asList(sortColumns);
//            if (!sortList.contains(sortColumn.toLowerCase())) {
//                return new Result<>(ResultEnums.PARAMS_ERROR.getCode(), "排序参数不合法！");
//            }
//        }
//        page = userService.getByPage(page);
//        return new Result<>(page);
//    }
    
    // 后台冻结用户的接口
//    @PutMapping("/back/{id}/freeze/{deleted}")
//    public Result<Object> freezeUser(@PathVariable("id") String id,@PathVariable("deleted") Integer deleted) {
//        return userService.freezeUser(id,deleted);
//    }
}
